The present invention relates in general to a caching system. In particular, the present invention relates to a scalable and highly available cache in computer networks. Furthermore, the present invention relates to an array of caches used in a client/server environment such as, in particular, the World Wide Web.
Caching is commonly used for improving performance on computer systems. Once an object is stored in a cache, subsequent requests for the cached object may be satisfied by the cache. Satisfying requests for an object from a cache may incur less overhead than regenerating or retrieving the object from a remote location. Slow performance coupled with a growing demand for Web services, may cause Web servers to become inefficient or unusable.
Caching offers a methodology for dealing with growing demands for greater throughput for Web and Proxy servers. Systems of clients and servers on the World Wide Web, for example, may use caching to improve performance. In some instances, Web server applications may perform slowly and inefficiently without the benefit of a cache. Without the benefit of a caching scheme, Web servers may become a system bottleneck. The underlying operating system running on a Web server, for example, may have performance problems impeding the throughput of the Web server. One technique for improving the performance of Web servers is to store frequently requested data (e.g. Web pages) in a cache. Retrieving data from the cache may require less overhead than retrieving the data from the Web server.
Requests for objects are received from one or more clients in a system comprised of a plurality of nodes. One of the requests is sent from one of the clients. The request is received from a first node of said plurality of nodes by a second node of said plurality of nodes. A requested object is returned from the second node of the plurality of nodes using one of a plurality of protocols.